/*
slice
https://www.bilibili.com/video/BV1gf4y1r79E/?p=13&spm_id_from=pageDriver&vd_source=8bd7b24b38e3e12c558d839b352b32f4
*/
package main

import "fmt"

func printArr(arr []int) {
	for idx, val := range arr {
		fmt.Println("arr[", idx, "] = ", val)
	}
}

func info(arr []int) {
	fmt.Printf("len = %d, %v\n", len(arr), arr)
}

func main() {
	// 1. 声明一个切片并赋值
	// slice1是一个切片
	slice1 := []int{1, 2, 3}
	//fmt.Printf("slice1 len = %d, slice = %v\n", len(slice1), slice1)
	//printArr(slice1)
	info(slice1)

	// 2. 先声明，后使用
	// 声明一个slice
	var slice2 []int
	info(slice2)
	// slice2[0] = 1// 会报错！
	slice2 = make([]int, 3)
	slice2[0] = 100
	info(slice2)

	// 3. 声明并开辟空间
	var slice3 []int = make([]int, 3)
	info(slice3)

	// 4. 3的简写
	slice4 := make([]int, 4)
	info(slice4)

	// 5. 判断一个切片是否被初始化了空间
	var slice5 []int
	if slice5 == nil {
		fmt.Println("slice5并没有被分配空间")
	}
}
